#ifndef SKIN_H
#define SKIN_H

#include <allegro5/allegro5.h>
#include <vector>
class Font;
class ScrollSkin;
class KnobSkin;
class ButtonSkin;

class Skin {
public:
     // color indexes
     enum Colors {
	  FgColor,
	  BgColor,
	  CursorColor,
	  HighlightColor,
	  HighlightColor2,
	  PlayingColor,
	  StoppedColor,
	  SelectedItemColor,
	  ButtonDownColor,
	  ColorCount
     };
     // buttons
     enum Buttons {
	  AddButton,
	  DelButton,
	  ButtonCount
     };

     Skin();
     ~Skin();
     Font* font() const;
     void setFont(Font *font);
     ScrollSkin* scrollSkin() const;
     void setScrollSkin(ScrollSkin *scrollSkin);
     KnobSkin* knobSkin() const;
     void setKnobSkin(KnobSkin *knobSkin);
     const ALLEGRO_COLOR& color(Colors col) const;
     void setColor(Colors col, const ALLEGRO_COLOR &val);
     ButtonSkin* buttonSkin(Buttons button) const;
     void setButtonSkin(Buttons button, ButtonSkin *pSkin);

private:
     Font *m_pFont;
     ScrollSkin *m_pScrollSkin;
     KnobSkin *m_pKnobSkin;
     std::vector<ALLEGRO_COLOR> m_colors;
     std::vector<ButtonSkin*> m_buttonSkins;
};

#endif
